//WY24 洗牌

#include <iostream>
#include <vector>
using namespace std;

// 洗牌接口
void brushCord(vector<int>& v)
{
    vector<int> tmp(v.size(), 0);
    int begin1 = 0, begin2 = v.size() / 2; // 分为两叠
    int index = 0;
    for(int i = 0; i < v.size() / 2; i++)
    {
        // 交替存入 tmp 数组
        tmp[index++] = v[begin1++];
        tmp[index++] = v[begin2++];
    }
    for(int i = 0; i < v.size(); i++) v[i] = tmp[i];
}
// 打印
void Print(vector<int>& v)
{
    for(int i = 0; i < v.size(); i++) cout << v[i] << " ";
    cout << endl;
}
int main() 
{
    int T = 0;
    cin >> T;
    while(T)
    {
        int n = 0, k = 0;
        cin >> n >> k;
        vector<int> v(2 * n, 0);
        for(int i = 0; i < 2 * n; i++) cin >> v[i];
        // 洗牌
        while(k--) brushCord(v);
        Print(v);

        T--;
    }

    return 0;
}
// 64 位输出请用 printf("%lld")